package cz.pecinovsky.česky.oopnz.záloha_do_budoucna;
//Příliš žluťoučký kůň úpěl ďábelské ódy
/*******************************************************************************
 *<pre>
 * Předchozí:   Není - toto_je_nově_definovaná_třída
 *              Ttt v projektu Ppp
 * Následující: Prozatím není
 *
 * Projekt  Ppp
 *   + Přidáno
 *   - Odebráno
 *   ~ Změněno
 *</pre>
 */


////////////////////////////////////////////////////////////////////////////////
//%%+  +++++ Konec ignorovaného počátečního textu +++++


/*******************************************************************************
 * Instance třídy <b><code>Pozice</code><b> slouží jako přepravka
 * pro uchování informací o časování semaforů na křižovatkách.
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
public class Časování
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================

    /** Rychlé časování  úplného cyklu semaforu. */
    public final static Časování CYKLUS = new Časování( 400, 600, 300, 700, 0 );
    
    /** Časování pro blikající oranžové světlo. */
    public final static Časování BLIKEJ = new Časování( 500, 0, 0, 0, 500 );
    
    
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================

    /** Doba, po níž bude nastaven stav Pozor.    */ public final int pozor;
    /** Doba, po níž bude nastaven stav Stop.     */ public final int stop;
    /** Doba, po níž bude nastaven stav Připravit.*/ public final int připravit;
    /** Doba, po níž bude nastaven stav Volno.    */ public final int volno;
    /** Doba, po níž bude nastaven stav Zhasni.   */ public final int zhasni;
    
    
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== NESOUKROMÉ METODY TŘÍDY ===================================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /*************************************************************************** 
     * Vytvoří přepravku se zadanými dobami trvání stavů semaforu.
     *       
     * @param pozor     Doba, po níž bude svítit samotná oranžová
     * @param stop      Doba, po níž bude svítit samotná červená
     * @param připravit Doba, po níž bude svítit červená s oranžovou
     * @param volno     Doba, po níž bude svítit samotná zelená
     * @param zhasni    Doba, po níž nebude svítit žádné světlo      
     */
    public Časování( int pozor, int stop, int připravit, int volno, int zhasni )
    {
        this.pozor     = pozor;
        this.stop      = stop;
        this.připravit = připravit;
        this.volno     = volno;
        this.zhasni    = zhasni;
   }


//== ABSTRAKTNÍ METODY =========================================================
//== NESOUKROMÉ  METODY INSTANCÍ ===============================================
    
    /*************************************************************************** 
     * Vrátí celkovou dobu cyklu při daném časování.
     *      
     * @param return Celková doba cyklu      
     */
    public int dobaCyklu() 
    {
        return pozor + stop + připravit + volno + zhasni;
    } 


//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTY =====================================================================
//
//    /***************************************************************************
//     *
//     */
//    public static void test() {
//        new Časování();
//    }
//    public static void main( String... args ) { test(); }
}
